package com.jyw.business.ins.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.jyw.business.ast.domain.vo.web.InsUnitAstPageVO;
import com.jyw.business.ins.domain.InsUnit;
import com.jyw.business.ins.domain.dto.web.InsUnitAddDto;
import com.jyw.business.ins.domain.dto.web.InsUnitEditDto;
import com.jyw.business.ins.domain.dto.web.InsUnitPageDto;
import com.jyw.business.ins.domain.dto.web.InsUnitStateDto;
import com.jyw.business.ins.domain.vo.web.InsUnitInfoVO;
import com.jyw.business.ins.domain.vo.web.InsUnitPageVO;

import java.util.List;

/**
 * 巡检单元Service接口
 *
 * @author zhangcheng
 * @date 2023-09-21
 */
public interface IInsUnitService extends IService<InsUnit> {

    /**
     * 查询巡检单元
     *
     * @param id 巡检单元主键
     * @return 巡检单元
     */
    InsUnit selectInsUnitById(Long id);

    /**
     * 查询巡检单元资产
     *
     * @param id
     * @return
     */
    List<InsUnitAstPageVO> findAstById(Long id);

    /**
     * 查询巡检单元详情
     *
     * @param id
     * @return
     */
    InsUnitInfoVO findInfoById(Long id);

    /**
     * 查询巡检单元列表
     *
     * @param insUnit 巡检单元
     * @return 巡检单元集合
     */
    List<InsUnit> selectInsUnitList(InsUnit insUnit);

    /**
     * 查询巡检计划选择单元
     *
     * @return
     */
    List<InsUnit> selectPlanUnitList();

    /**
     * 查询巡检单元列表
     *
     * @param insUnitPageDto 巡检单元
     * @return 巡检单元集合
     */
    List<InsUnitPageVO> pageInsUnitList(InsUnitPageDto insUnitPageDto);

    /**
     * 新增巡检单元
     *
     * @param insUnitAddDto 巡检单元
     * @return 结果
     */
    int insertInsUnit(InsUnitAddDto insUnitAddDto);

    /**
     * 修改巡检单元
     *
     * @param insUnitEditDto 巡检单元
     * @return 结果
     */
    int updateInsUnit(InsUnitEditDto insUnitEditDto);

    /**
     * 修改巡检单元状态
     *
     * @param insUnitStateDto
     * @return
     */
    int updateState(InsUnitStateDto insUnitStateDto);

    /**
     * 批量删除巡检单元
     *
     * @param ids 需要删除的巡检单元主键集合
     * @return 结果
     */
    int deleteInsUnitByIds(Long[] ids);

    /**
     * 删除巡检单元信息
     *
     * @param id 巡检单元主键
     * @return 结果
     */
    int deleteInsUnitById(Long id);
}
